import 'package:flutter/material.dart';
import 'package:get/get.dart'; // 用于 Get.back() 实现返回

/// 通用 AppBar，可配置返回键、标题、右侧按钮（图标或文字）
import 'package:flutter/material.dart';
import 'package:get/get.dart'; // 用于 Get.back() 实现返回

/// 通用 AppBar，可配置返回键、标题、右侧按钮（图标或文字）
class TitleBar extends StatelessWidget implements PreferredSizeWidget {
  final String title; // 中间标题
  final bool showBack; // 是否显示返回按钮
  final VoidCallback? onBackTap; // 左侧返回按钮点击事件（可选）
  final bool showRight; // 是否显示右侧按钮
  final String? rightText; // 右侧文字按钮内容
  final IconData? rightIcon; // 右侧图标按钮内容
  final VoidCallback? onRightTap; // 右侧按钮点击事件

  const TitleBar({
    Key? key,
    required this.title,
    this.showBack = true,
    this.onBackTap, // ← 新增的自定义返回点击事件
    this.showRight = false,
    this.rightText,
    this.rightIcon,
    this.onRightTap,
  }) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return AppBar(
      // 左侧返回按钮，可隐藏
      leading: showBack
          ? IconButton(
        icon: Icon(Icons.arrow_back),
        onPressed: () {
          if (onBackTap != null) {
            onBackTap!(); // 调用自定义回调
          } else {
            Get.back(); // 默认回退
          }
        },
      )
          : null,

      centerTitle: true, // 标题居中
      elevation: 0.5, // 阴影
      backgroundColor: Colors.white, // 背景颜色
      foregroundColor: Colors.black, // 所有图标和文字颜色

      // 中间标题文字
      title: Text(
        title,
        style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold),
      ),

      // 右侧按钮（文字或图标）
      actions: showRight
          ? [
        rightText != null
            ? TextButton(
          onPressed: onRightTap,
          child: Text(
            rightText!,
            style: TextStyle(color: Colors.blue, fontSize: 16),
          ),
        )
            : rightIcon != null
            ? IconButton(
          icon: Icon(rightIcon),
          onPressed: onRightTap,
        )
            : SizedBox.shrink(), // 无内容时占位空组件
      ]
          : [],
    );
  }

  @override
  Size get preferredSize => Size.fromHeight(kToolbarHeight);
}

